home *** CD-ROM | disk | FTP | other *** search
/ PC Media 7 / PC MEDIA CD07.iso / share / prog / ooav3 / ooavlzh.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-05-22  |  1.8 KB  |  78 lines

  1. {
  2.         Object-Oriented Archive-viewer: LZH-part
  3. }
  4.  
  5. Unit      OOAVLzh;
  6.  
  7. Interface
  8.  
  9. Uses      Dos,OOAV;
  10.  
  11. Type      LFHeader=Record
  12.                      Headsize,Headchk          :byte;
  13.                      HeadID                    :packed Array[1..5] of char;
  14.                      Packsize,Origsize,Filetime:longint;
  15.                      Attr                      :word;
  16.                      Filename                  :string[12];
  17.                      f32                       :pathstr;
  18.                      dt                        :DateTime;
  19.                    end;
  20.  
  21.  
  22. type      PLzhArchive=^TLzhArchive;
  23.           TLzhArchive=object(TGeneralArchive)
  24.                         constructor Init;
  25.                         procedure FindFirst(var sr:SearchRec);virtual;
  26.                         procedure FindNext(var sr:SearchRec);virtual;
  27.                       private
  28.                         _FHdr:LFHeader;
  29.                         _SL:longint;
  30.                         procedure GetHeader(var sr:SearchRec);
  31.                       end;
  32.  
  33.  
  34. Implementation
  35.  
  36.  
  37. constructor TLzhArchive.Init;
  38. begin
  39.   _SL:=0;
  40.   FillChar(_FHdr,sizeof(_FHdr),0);
  41. end;
  42.  
  43.  
  44. procedure TLzhArchive.GetHeader(var sr:SearchRec);
  45. var       nr:word;
  46. begin
  47.   fillchar(sr,sizeof(sr),0);
  48.   seek(_FArchive,_SL);
  49.   if eof(_FArchive) then
  50.     exit;
  51.   blockread(_FArchive,_FHdr,sizeof(LFHeader),nr);
  52.   if _FHdr.headsize=0 then
  53.     exit;
  54.   inc(_SL,_FHdr.headsize);
  55.   inc(_SL,2);
  56.   inc(_SL,_FHdr.packsize);
  57.   if _FHdr.headsize<>0 then
  58.     UnPackTime(_FHdr.FileTime,_FHdr.DT);
  59.   sr.Name:=_FHdr.FileName;
  60.   sr.Size:=_FHdr.OrigSize;
  61.   sr.Time:=_FHdr.FileTime;
  62. end;
  63.  
  64.  
  65. procedure TLzhArchive.FindFirst(var sr:SearchRec);
  66. begin
  67.   _SL:=0;
  68.   GetHeader(sr);
  69. end;
  70.  
  71.  
  72. procedure TLzhArchive.FindNext(var sr:SearchRec);
  73. begin
  74.   GetHeader(sr);
  75. end;
  76.  
  77.  
  78. end.